package com.song.demo.webmvc.servlet;

import lombok.Data;

import java.io.File;
import java.net.URL;
import java.util.Locale;

/**
 *
 *原生中的viewResolver主要完成模板名称和模板解析引擎的匹配、
 * 通过在servlet中resolveViewName()方法获得模板所对应的view,
 * 在这里只实现一套默认的模板引擎，语法也是完全自定义的
 */

/**
 * 设计这个类的主要目的是
 * 1.将一个静态文件变成一个动态文件
 * 2.根据用户传送的不同参数，产出不同的结果
 * 最终输出字符串，交给response输出
 *
 * 完成了模板引擎和模板名称的匹配
 */
@Data
public class GPViewSolver {
    private final String default_template_suffix = ".html";

    private File templateRootDir;

    private String viewName;



    public GPViewSolver(String  templateRoot) {
        String file = this.getClass().getClassLoader().getResource(templateRoot).getFile();
        this.templateRootDir = new File(file);
    }
    public GPView resolveViewName(String viewName, Locale locale) throws Exception{
        this.viewName = viewName;
        if (null == viewName || "".equals(viewName.trim())){
            return null;
        }
        viewName = viewName.endsWith(default_template_suffix) ? viewName: (viewName + default_template_suffix);
        File templateFile = new File((templateRootDir.getPath() + "/" + viewName).replaceAll("/+", "/"));
        return new GPView(templateFile);
    }



}
